Beginning first with telephone answering devices, many devices are now available in the market place which allow a person connected by telephone to the device to generate touchtones which are interpreted by the device and which cause the device to take one or more of many actions or features. Examples include automated attendant switchboard systems which allow the caller to specify which person or department he or she wishes to reach, voice messaging systems which allow the device owner or callers to record and retrieve messages, audio information services which allow a caller to access recorded messages with different kinds of information or have the device fax to the caller information in printed form, and remote controllers for electronic components which allow the component to be operated remotely via a telephone connection.
Each of these devices presents the user with a set of menus, each menu containing choices which may be selected by entering touchtone commands at the caller's telephone. Most of these devices play for the caller prompts, which are prerecorded messages informing the caller of his or her options. If the number of features available in the device is small, all of the features can be presented at one time and there will be only one menu. Often, the features will be organized in a hierarchy of menus with certain features grouped together in a sub-menu which can be accessed by a selection from the menu at the level above. Unless there are only two features available to a caller, the features can always be organized in a hierarchy of menus. Typically, there are many possible structures for this hierarchy. For example, the hierarchy can be organized such that no more than two options are presented at any one time, such as, "yes" or "no". This creates a menu system which is very easy to understand and navigate, but it requires passing through many levels before the desired end result feature is reached.
As electronic devices which can be controlled through a telephone have become more complex, the number of features has proliferated, creating very complex menu structures. To make navigation of these menus easier, some devices present the caller with a choice of different sets of menus for beginners and advanced users. Typically, the beginner's set of menus has long and detailed prompts while the advanced user's set of menus has terse, cryptic prompts. Also, the advanced user's set of menus may offer more features than the beginner's set of menus. In addition, some devices allow the use of certain touchtones to go back to the previous level of the menu hierarchy or to escape the menu hierarchy and return to the first level.
The above beginner/advanced menu structures have a subset/superset relationship. As discussed herein a first set of menus is a subset of a second set of menus if the only changes are the wording of the prompts and the addition of choices in menus of the second set of menus that were not available in the first set of menus. If the one or more menus of the first and second set each have choices different from the choices in the corresponding menu of the other set then the two sets of menus have no subset/superset relation.
In addition, some devices define a certain key stroke or sequence of key strokes %o invoke a "help" recording. Typically, the recording that is played when help is invoked depends upon the menu prompt that was last played and contains an elaboration of the information in the prompt.
Once the logic control for a device has been programmed to implement a particular set of menus, reprogramming the interface to implement a different set of menus requires essentially the same process and the same technical understanding as the programming of the original design.
A typical logic sequence, which is written in a computer programming language, works like this:
1. play prompt: the standard greeting. PA0 2. play prompt: To check your messages, press 1; to record a message, press 2; to change your setup, press 3.
(a) If touchtone 1 pressed: play prompt: you have.sub.-- new messages. To play new messages, press 1, to play old messages, press 2, to return to main menu, press *. PA1 (b) If touchtone 2 pressed: play prompt: Record your message. When you have finished recording, press 1. PA1 (c) If touchtone 3 pressed: play prompt: To change your greeting, press 1; to turn on message forwarding; press 2; to turn off message forwarding, press 3. PA1 (d) If any other touchtone or no touchtone pressed: return to step 2, and if any other or no touchtone is pressed again, play prompt: Goodbye; and exit.
(i) If touchtone 1 pressed: play prompt: to exit playing of messages, press *, to delete a message, press #; play new messages. PA2 (ii) If touchtone 2 pressed: play prompt: to exit playing of messages, press *, to delete a message, press #; play old messages. PA2 (iii) If touchtone * pressed: return to step 2. PA2 (iv) If any other or no touchtone is pressed, return to step 2. PA2 (i) If touchtone 1 pressed: play prompt: enter the box number of the person to receive your message. PA2 (ii) If any other or no touchtone is pressed, return to step (b), and if any other or no touchtone is pressed again, return to step 2. PA2 (i) If touchtone 1 pressed: play prompt: Record new greeting. When you have finished recording, press 1. PA2 (ii) If touchtone 2 pressed: play prompt: Message forwarding now on; return to step 2. PA2 (iii) If touchtone 3 pressed: play prompt: Message forwarding now off; return to step 2. PA2 (iv) If any other or no touchtone is pressed, return to step (c), and if any other or no touchtone is pressed again, return to step 2.
(1) If touchtones are pressed, record #, send message, and return to step 2. PA3 (2) If no touchtones are pressed, return to step (i), and if no touchtones are pressed again, return to step 2. PA3 (1) If touchtone 1 pressed: play prompt: to listen to your greeting, press 1; to return to main menu, press *. PA4 (A) If touchtone 1 pressed: play greeting. PA4 (B) If touchtone * pressed: return to step 2. PA4 (C) If any other or no touchtone is pressed, return to step (1), and if any other or no touchtone is pressed again, return to step 2. PA3 (2) If any other or no touchtone is pressed, return to step (i), and if any other or no touchtone is pressed again, return to step 2.
In the example above, each time the words "play prompt" appear, a new menu is presented to the user. Two of those menus, the first and the last, do not call for any action by the user. The program logic simply continues after the prompt is played. Notice that 13 menus are contained in the above example. Many actual contemporary systems employ more than 30 menus. If each menu requires an average of 8 lines of computer program code to implement, the total set of menus will require 240 lines of code. In the above example, there are 22 logical steps. Programming this example in a programming language would require many more than 22 lines of code.
In the prior art, when a set of menus like the above example is programmed, the programmer implements each of the logic steps in the listed sequence by writing lines of code to implement each step. An implementation of the above example will contain a command for "play prompt" thirteen times, once for each time a prompt is to be played. Likewise, the implementation will contain a sequence of code which represents "if any other or no touchtone is pressed, return to step 2" seven times.
The programming or modification of a set of menus is very complicated. It requires a skilled programmer to write the original lines of computer program code or to change the lines of code. To change the recording of a particular prompt simply requires changing a sound recording stored at a particular address in the system. This is easy for the user to do. However, to change the structure of the menus, to move a feature option from one menu to another, to break a long menu into two short menus, or to give the user another exit point in the menu structure, is very difficult and complicated. When a set of menus is created or modified, great attention must be paid to each detail to be sure that all possible branches are considered. Otherwise, the program will not function correctly if an unspecified touchtone is selected.